﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright company="Microsoft Corp." file="SchedulerTask.cs">
//   All rights reserved. See License.txt in the project root for license information.
// </copyright>
// 
// --------------------------------------------------------------------------------------------------------------------
namespace HpcSchedulerManagement.DataContracts
{
    public class SchedulerTask
    {
        public SchedulerTask()
        {
            this.State = TaskState.Configuring;
        }

        public int Id { get; set; }

        public string Name { get; set; }

        public TaskState State { get; set; }

        public int? ParentJobId { get; set; }

        public int? RuntimeSeconds { get; set; }

        public UnitType? UnitType { get; set; }

        public int? MinCores { get; set; }

        public int? MaxCores { get; set; }

        public int? MinNodes { get; set; }

        public int? MaxNodes { get; set; }

        public int? MinSockets { get; set; }

        public int? MaxSockets { get; set; }

        public int? NiceId { get; set; }

        public string CommandLine { get; set; }

        public string RequiredNodes { get; set; }

        public string DependsOn { get; set; }

        public bool? IsExclusive { get; set; }

        public bool? IsRerunnable { get; set; }

        public int? GroupId { get; set; }

        public string StdOutFilePath { get; set; }

        public string StdInFilePath { get; set; }

        public string StdErrFilePath { get; set; }

        public string WorkDirectory { get; set; }

        public int? StartValue { get; set; }

        public int? EndValue { get; set; }

        public int? IncrementValue { get; set; }

        public string Output { get; set; }

        public string RequestCancel { get; set; }

        public int? RequeueCount { get; set; }

        public string UserBlob { get; set; }

        public string SubmitTime { get; set; }

        public string CreateTime { get; set; }

        public string StartTime { get; set; }

        public string EndTime { get; set; }

        public int? AutoRequeueCount { get; set; }

        public TaskType? Type { get; set; }

        public TaskState? PreviousState { get; set; }

        public string AllocatedNodes { get; set; }
    }
}